package com.byb.server.service.util.WcUtil;

import com.byb.server.service.dto.Wc.WcProductForFontEndDTO;
import com.byb.server.service.dto.Wc.WcSearchProductDTO;


import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 对微信端的产品数据进行数据聚合
 * 只有在接口参数都为null 才进行公司分类效果
 */
public class WcProductbyInsurer {


    /**
     *
     * @param list 险种下的产品 ，
     * @param isurerIdList 公司产品
     * @param isHave 是否 进行公司分类
     * @return
     */
    public static List<WcProductForFontEndDTO> productByInsurer(List<WcSearchProductDTO> list,List<Long> isurerIdList,boolean isHave){
        if(list.isEmpty()||list==null){
            return null;
        }
        List<WcProductForFontEndDTO> zzResult=new ArrayList<>();
        for (int i = 0; i <isurerIdList.size() ; i++) {
            List<WcSearchProductDTO> data=new ArrayList<>();
            for (int j = 0; j <list.size(); j++) {
                if(isurerIdList.get(i)==list.get(j).getWcIsurerId()&&data.size()<5){
                    data.add(list.get(j));
                }
            }
            zzResult.addAll(productbyType(data,isHave));
        }
        return zzResult;
    }

    /**
     * 确定公司产品列表
     * @param list 公司所属产品
     * @param isHave 是否赋值产品公司 的详细信息 公司分类效果
     * @return
     */
    public static List<WcProductForFontEndDTO> productbyType(List<WcSearchProductDTO> list,boolean isHave){
        if(list.isEmpty()||list==null){
            return null;
        }
        List<WcProductForFontEndDTO> result =new ArrayList<>();
        WcProductForFontEndDTO wcProductForFontEndDTO = new WcProductForFontEndDTO();
        if(isHave){
            wcProductForFontEndDTO.setId(list.get(0).getWcIsurerId());
            wcProductForFontEndDTO.setName(list.get(0).getWcIsurerName());
        }
        wcProductForFontEndDTO.setWcSearchProductDTOList(list.stream().sorted(Comparator.comparing(WcSearchProductDTO::getRankDouble)).collect(Collectors.toList()));
        result.add(wcProductForFontEndDTO);
        return result;
    }
}
